package mid

import "sort"

/*
* @author: hjz
* @time: 2025/5/27 20:45
给你一个字符串数组，请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。
字母异位词 是由重新排列源单词的所有字母得到的一个新单词。

示例 1:
输入: strs = ["eat", "tea", "tan", "ate", "nat", "bat"]
输出: [["bat"],["nat","tan"],["ate","eat","tea"]]

	20ms击败6.62%
*/
func groupAnagrams(strs []string) [][]string {
	m := make(map[string]int)
	res := make([][]string, 0, len(strs)>>1)
	for _, str := range strs {
		if v, ok := m[groupAnagramsFormat(str)]; ok {
			res[v] = append(res[v], str)
		} else {
			m[groupAnagramsFormat(str)] = len(res)
			res = append(res, []string{str})
		}
	}
	return res
}
func groupAnagramsFormat(v string) string {
	tmp := []rune(v)
	sort.Slice(tmp, func(i, j int) bool {
		return tmp[i] < tmp[j]
	})
	return string(tmp)
}
